#include <stdio.h>
#include <stdlib.h>

// 给你一个非负整数 num ，请你返回将它变成0所需要的步数。
// 如果当前数字是偶数，你需要把它除以2;否则，减去1。

int main(){
    int num = 200;

    // 这里使用动态规划递推，帮助找到num以内任何数到0需要的步数。
    // 如果题目没有其他要求，只要求求出num到0的步数的话，还是直接进行模拟比较好
    int *dp = (int*)malloc((num+1)*sizeof(int));
    dp[0] = 0;
    for(int i=1;i<=num;i++){
        if(i%2==0){
            dp[i] = dp[i/2]+1;
        }else{
            dp[i] = dp[i-1]+1;
        }
    }
    printf("%d",dp[num]);
    return 0;
}
